package com.college.common.utils.date;

import java.sql.Timestamp;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 时间转化工具 date转为时间戳 时间戳转date 互相与String的转换
 * 所有出现的String time 格式都必须为(yyyy-MM-dd HH:mm:ss)，否则出错
 *
 * @author 小C工作室
 */
public class TimeExchange {

	/**
	 * String(yyyy-MM-dd HH:mm:ss) 转 Date
	 *
	 * @param time
	 * @return
	 * @throws ParseException
	 */
	// String date = "2010/05/04 12:34:23";
	public static Date stringToDate(String time) throws ParseException {

		Date date = new Date();
		// 注意format的格式要与日期String的格式相匹配
		DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		try {
			date = dateFormat.parse(time);
			System.out.println(date.toString());
		} catch (Exception e) {
			e.printStackTrace();
		}

		return date;
	}

	/**
	 * Date转为String(yyyy-MM-dd HH:mm:ss)
	 *
	 * @param time
	 * @return
	 */
	public static String dateToString(Date time) {
		String dateStr = "";
		Date date = new Date();
		DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH/mm/ss");
		try {
			dateStr = dateFormat.format(time);
			System.out.println(dateStr);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return dateStr;
	}

	/**
	 * String(yyyy-MM-dd HH:mm:ss)转10位时间戳
	 *
	 * @param time
	 * @return
	 */
	public static Integer stringToTimestamp(String time) {

		int times = 0;
		try {
			times = (int) ((Timestamp.valueOf(time).getTime()) / 1000);
		} catch (Exception e) {
			e.printStackTrace();
		}
		if (times == 0) {
			System.out.println("String转10位时间戳失败");
		}
		return times;

	}

	/**
	 * 10位int型的时间戳转换为String(yyyy-MM-dd HH:mm:ss)
	 *
	 * @param time
	 * @return
	 */
	public static String timestampToString(Integer time) {
		//int转long时，先进行转型再进行计算，否则会是计算结束后在转型
		long temp = (long) time * 1000;
		Timestamp ts = new Timestamp(temp);
		String tsStr = "";
		DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		try {
			//方法一
			tsStr = dateFormat.format(ts);
			System.out.println(tsStr);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return tsStr;
	}

	/**
	 * 10位时间戳转Date
	 *
	 * @param time
	 * @return
	 */
	public static Date timestampToDate(Integer time) {
		long temp = (long) time * 1000;
		Timestamp ts = new Timestamp(temp);
		Date date = new Date();
		try {
			date = ts;
			//System.out.println(date);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return date;
	}

	/**
	 * Date类型转换为10位时间戳
	 *
	 * @param time
	 * @return
	 */
	public static Integer dateToTimestamp(Date time) {
		Timestamp ts = new Timestamp(time.getTime());

		return (int) ((ts.getTime()) / 1000);
	}

}